- 締切済み
プログラミング
プログラミング教えてください 子プロセスはsleep時間をカウントし、シグナルSIGTSTP受信後、親プロセスにsleep時間をパイプラインで通知し親プロセスは、 sleep時間をプリントして終了せよ 上のプログラムが親で、下が子です。子のプログラムに付け足すだけでいいです。 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <time.h> int main() { char read_fd[3],write_fd[3]; int fd[2],st; time_t result; if (pipe(fd)<0) { perror("pipe"); exit(EXIT_FAILURE); } snprintf(read_fd,sizeof(read_fd),"%d",fd[0]); snprintf(write_fd,sizeof(write_fd),"%d",fd[1]); if (fork()==0) { if (execl("hw6-c","hw6-c",read_fd,write_fd,NULL)<0) { exit(EXIT_FAILURE); } } else { signal(SIGTSTP,SIG_IGN); // 親は Ctrl-Zを無視 } wait(&st); read(fd[0],&result,sizeof(result)); printf("elapsed time = %ld\n",result); close(fd[0]); close(fd[1]); return EXIT_SUCCESS; } #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> time_t start; int read_fd,write_fd; int main(int argc,char *argv[]) { void stop(); read_fd=atoi(argv[1]); write_fd=atoi(argv[2]); signal(SIGTSTP,stop); time(&start); while (1) { sleep(1); printf(":"); fflush(stdout); } } void stop() { time_t end; この部分を考えて下さい Ctrl-Z後に子が行うことを書く 1)終了時刻(end)を測定 2)end-startをパイプバッファに書く close(read_fd); close(write_fd); exit(EXIT_SUCCESS); }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- SoltyRevant
- ベストアンサー率59% (129/216)
回路やプログラミング関連の質問を連日質問をして、 そして折角丁寧に貰った回答に禄にお礼コメントもせずに次の質問を乱立させて、 学校の課題なら少しは自分で考えたらどうですか? 高い学費を出して入学させてその結果がこれなら親が泣きますよ?