[お勉強] プロセスを生成する〜popen
今度は,popenを使ってプロセスを生成してみる.
popenは,外部のプロセスが終わるまで親プロセス(生成元)は待機するようだ.
ソースコードは,例えば,こんな感じか.
#include#include #include int main(int argc, char *argv[]) { int buff_size = 1000; char*buffer = (char*) malloc( sizeof(char) * buff_size ); int readed_num; FILE *p = popen( "../hoge/hoge", "r" ); memset( (void*)buffer, '', sizeof(buffer) ); if( p != NULL ){ readed_num = fread( buffer, sizeof(char), buff_size, p ); while( readed_num > 0 ){ readed_num = fread( buffer, sizeof(char), buff_size, p ); printf( "%s", buffer ); } pclose( p ); return 0; } return 1; }
実行結果は,こんな感じ.
$ ./popen 0 sec passed. 1 sec passed. 2 sec passed. 3 sec passed. 4 sec passed. 5 sec passed. 6 sec passed. 7 sec passed. 8 sec passed. 9 sec passed. hoge has finished.
プロセスは,ちゃんと別プロセスで生成される.
sonson 9528 0.0 0.0 599632 300 s001 S+ 2:10PM 0:00.00 ../hoge/hoge sonson 9527 0.0 0.0 599632 304 s001 S+ 2:10PM 0:00.00 ./popen
fork,system,popen,これだけあれば,一通りのことができそうだ.
後は,pthreadの勉強でもしてみるか.