70 likes | 220 Views
クリップボードカット&ペースト. クリップボードカット&ペースト クリップボードカット&ペーストの操作 mcut - クリップボードカット mpaste - クリップボードペースト medit - クリップボード編集 medit - クリップボード編集の操作. mpaste 共有メモリからデータを取出しプリントする. mcut 標準入力から入力されたデータを共有メモリに入れる. 共有 メモリ. write. read. print. クリップボードカット&ペースト. クリップボードカット&ペーストの操作. mcut. mpaste. 共有
E N D
クリップボードカット&ペースト • クリップボードカット&ペースト • クリップボードカット&ペーストの操作 • mcut - クリップボードカット • mpaste - クリップボードペースト • medit - クリップボード編集 • medit - クリップボード編集の操作
mpaste • 共有メモリからデータを取出しプリントする • mcut • 標準入力から入力されたデータを共有メモリに入れる 共有 メモリ write read print クリップボードカット&ペースト
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へ 共有メモリに書込む 共有メモリの利用を止める
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文字からキーを作る 共有メモリの先頭アドレスを得る 共有メモリから読み出す
mcut medit mpaste 共有 メモリ write read toupper write read print medit - クリップボード編集 • mcutによって共有メモリに書き込まれたデータを編集(例えば、全て大文字に変換(関数toupper()を使用)する)プログラム(medit.c)を作成する。 • 共有メモリに書き込まれたデータが、実際に、全て大文字になっていることをmpasteで確認する。
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 $ 大文字になっている