完全なプログラムとして、以下のコードはほとんどの条件下で問題なく動作します。
ハングさせる唯一の方法は、ハングtest1.txt
を引き起こす特別なファイルの種類である場合ですcp
。たとえば、mkfifo test1.txt
面白い結果が得られます。そして面白い結果は、CTRL + C、kill などでプログラムを強制終了する必要があることを意味します。
あなたの問題は、投稿したコードにはない可能性が最も高いです。
/* copy.c,
compile using the command "gcc -o copy copy.c"
run using "./copy"
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CMD_SIZE 256
char cmd[CMD_SIZE];
int main(int argc, char **argv)
{
memset( cmd, 0, CMD_SIZE );
sprintf( cmd, "cp %s %s", "test1.txt", "test2.txt" );
system(cmd);
printf("cmd complete\n");
}
健全性チェックとして、printf("%d\n", BUFSIZE)
の値をチェックし、コマンドが実際に意図したとおりに見えることを確認するために、追加をBUFSIZE
試みるprintf("%s\n", cmd)
ことができます。