mcut c include systypes h include sysipc h

  • Slides: 10
Download presentation

2.4 クリップボード(カット&ペースト) mcut. c 追加して下さい #include <sys/types. h> #include <sys/ipc. h> #include <sys/shm. h>

2.4 クリップボード(カット&ペースト) mcut. c 追加して下さい #include <sys/types. h> #include <sys/ipc. h> #include <sys/shm. h> #include <stdio. h> #include <stdlib. h> #include <string. h> mpaste. c int main() { char *head; char in_data[4096], *in_ptr; char *pos; int i, in_tmp, shmid; (存在する)ファイルの key_t shmkey; 名前と任意の1文字からキーを作る #include <sys/types. h> #include <sys/ipc. h> #include <sys/shm. h> #include <stdio. h> #include <stdlib. h> #include <string. h> shmkey=ftok("mcut", 'a'); shmid=shmget(shmkey, sizeof(in_data), IPC_CREAT|0666); head=pos=shmat(shmid, 0, 0); in_ptr=in_data; int main() { char *head; char out_data[4096], *out_ptr; char *pos; int shmid; ファイル名はmcut. c key_t shmkey; で使った名前と同じ 共有メモリの先頭 アドレスを得る for (i=0; i<sizeof(in_data)-1; i++) { if ((in_tmp=getchar())==EOF) { break; 標準入力からの } 文字をin_dataへ *in_ptr=in_tmp; in_ptr++; } 警告がでれば(char)NULL→’’ *in_ptr=(char)NULL; in_ptr=in_data; strncpy(pos, in_ptr, sizeof(in_data)); shmdt(head); return EXIT_SUCCESS; } 共有メモリ に書込む 共有メモリの 利用を止める でなければならない shmkey=ftok("mcut", 'a'); shmid=shmget(shmkey, sizeof(out_data), IPC_CREAT|0 666); 共有メモリの先頭ア 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; 共有メモリか } ら読み出す

宿題7 l mcut 宿題:(mcut. c, mpaste. cを参考にして)mcut w によって共有メモリに書き込まれたデータを 全て大文字に変換後、共有メモリに再度書 き込むプログラム(hw 7. c)。関数toupper()を 使用する。全て大文字になっていることを

宿題7 l mcut 宿題:(mcut. c, mpaste. cを参考にして)mcut w によって共有メモリに書き込まれたデータを 全て大文字に変換後、共有メモリに再度書 き込むプログラム(hw 7. c)。関数toupper()を 使用する。全て大文字になっていることを mpasteで確認すること。 l 表紙に氏名と学籍番号を書く l 本文にプログラムを書く hw 7. c l プログラムの実行結果を書く l 実施した内容を説明する文章を書く l レポートの締切は次の週の水曜日 18: 00 ヒント toupper()関数の使い方 for (i=0; i<strlen(out_data); i++) out_data[i] = toupper(out_data[i]); 使い終わった共有 メモリは削除する hw 7 mpaste write read toupper 共有 メモリ write read print [oida@rpc 261 soft 2]$ w 7: 43 pm up 7: 51, 2 users, load average: 0. 00, 0. 00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT oida pts/0 pupa 12: 34 pm 10: 53 0. 05 s -bash oida pts/1 pupa 7: 25 pm 0. 00 s 0. 08 s 0. 01 s w [oida@rpc 261 soft 2]$ gcc -o hw 7. c [oida@rpc 261 soft 2]$ w |. /mcut 全て大文字にする [oida@rpc 261 soft 2]$. /hw 7 [oida@rpc 261 soft 2]$. /mpaste 7: 43 PM UP 7: 52, 2 USERS, LOAD AVERAGE: 0. 00, 0. 00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT OIDA PTS/0 PUPA 12: 34 PM 10: 32 0. 05 S -BASH OIDA PTS/1 PUPA 7: 25 PM 0. 00 S 0. 07 S 0. 00 S W [oida@rpc 261 soft 2]$ ipcrm shm 360453 リソースを削除しました shmid [oida@rpc 261 soft 2]$