1

forkとexeclpを使用して非常に単純なプログラムを実行しようとしていますが、期待どおりに機能しません。現在、作業ディレクトリに「1」という名前のファイルがあります。したがって、コマンドrm1*で削除する必要があります。ただし、execlpを介して試行した場合、そうではありません。

int main()
{

  if(fork()==0)
    {
      execlp("rm", "rm", "1*",  NULL);
      perror("Problem\n");
    }

  return 0;
}

ありがとうございました。

4

1 に答える 1

1

あなたがやろうとしていることのために、あなたは欲しいです:

execlp("sh", "sh", "rm 1*", (char *)0);

これは、セキュリティ、堅牢性、および効率の観点から、かなり悪い考えであることに注意してください。パターンに一致するファイルを削除したい場合は、Cで直接行う必要がありglobます。関数と単純なループを使用すると簡単です。

于 2012-10-25T22:56:07.550 に答える