1 / 7

クリップボードカット&ペースト

クリップボードカット&ペースト. クリップボードカット&ペースト クリップボードカット&ペーストの操作 mcut - クリップボードカット  mpaste - クリップボードペースト medit - クリップボード編集 medit - クリップボード編集の操作. mpaste 共有メモリからデータを取出しプリントする. mcut 標準入力から入力されたデータを共有メモリに入れる. 共有 メモリ. write. read. print. クリップボードカット&ペースト. クリップボードカット&ペーストの操作. mcut. mpaste. 共有

pepper
Download Presentation

クリップボードカット&ペースト

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. クリップボードカット&ペースト • クリップボードカット&ペースト • クリップボードカット&ペーストの操作 • mcut - クリップボードカット  • mpaste - クリップボードペースト • medit - クリップボード編集 • medit - クリップボード編集の操作

  2. mpaste • 共有メモリからデータを取出しプリントする • mcut • 標準入力から入力されたデータを共有メモリに入れる 共有 メモリ write read print クリップボードカット&ペースト

  3. クリップボードカット&ペーストの操作

  4. mcut mpaste 共有 メモリ write read print mcut - クリップボードカット mcut.c 4096バイト、読書き可能な共有メモリを作成 int main() { char *head; char in_data[4096], *in_ptr; char *pos; int i, in_tmp, shmid; key_t shmkey; shmkey = ftok("mcut",'a'); shmid = shmget(shmkey,sizeof(in_data),IPC_CREAT|0666); head = pos = shmat(shmid,0,0); in_ptr = in_data; for (i=0; i<sizeof(in_data)-1; i++) { if ((in_tmp=getchar()) == EOF) { break; } *in_ptr = In_tmp; in_ptr++; } *in_ptr = (char)NULL; in_ptr = in_data; strncpy(pos,in_ptr,sizeof(in_data)); shmdt(head); return EXIT_SUCCESS; } ファイル名と1文字からキーを作る 共有メモリの先頭アドレスを得る 標準入力からの文字をin_dataへ 共有メモリに書込む 共有メモリの利用を止める

  5. mcut mpaste 共有 メモリ write read print mpaste - クリップボードペースト mpaste.c #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char *head; char out_data[4096], *out_ptr; char *pos; int shmid; key_t shmkey; shmkey = ftok("mcut",'a'); shmid = shmget(shmkey,sizeof(out_data),IPC_CREAT|0666); head = pos = shmat(shmid,0,0); out_ptr = out_data; strncpy(out_ptr,pos,sizeof(out_data)); printf("%s",out_data); fflush(stdout); return EXIT_SUCCESS; } ファイル名と1文字からキーを作る 共有メモリの先頭アドレスを得る 共有メモリから読み出す

  6. mcut medit mpaste 共有 メモリ write read toupper write read print medit - クリップボード編集 • mcutによって共有メモリに書き込まれたデータを編集(例えば、全て大文字に変換(関数toupper()を使用)する)プログラム(medit.c)を作成する。 • 共有メモリに書き込まれたデータが、実際に、全て大文字になっていることをmpasteで確認する。

  7. medit - クリップボード編集の操作 $ w 7:43pm up 7:51, 2 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT oida pts/0 pupa 12:34pm 10:53 0.05s 0.05s -bash oida pts/1 pupa 7:25pm 0.00s 0.08s 0.01s w $ gcc -o hw6 hw6.c $ w | ./mcut $ ./medit $ ./mpaste 7:43PM UP 7:52, 2 USERS, LOAD AVERAGE: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT OIDA PTS/0 PUPA 12:34PM 10:32 0.05S 0.05S -BASH OIDA PTS/1 PUPA 7:25PM 0.00S 0.07S 0.00S W $ 大文字になっている

More Related