3

プログラムnotify.cを使用して、別のディレクトリにある「helloworld」(source.cからコンパイルされた)という名前のバイナリファイルを実行しようとしています。私のファイルは次の場所にあります。

/home/morts/デスクトップ/helloworld

/home/morts/Desktop/宿題/通知

私は試しました:

const char *cmd = "/home/morts/Desktop/helloworld";
execl(cmd, "LOL", NULL);
perror("execl()");
exit(EXIT_FAILURE);

しかし、私は得る:

execl(): Permission denied

helloworld が notify の同じディレクトリにある場合は、単純に「./helloworld」と入力しますが、別のディレクトリにあるため、これを修正するにはどうすればよいですか?

ありがとうございます。

4

2 に答える 2

0

パラメーターなしで execl によってパス /bin/test の下にあるファイル hello を実行する場合は、次のようにしてください。

execl("/bin/test/hello", "hello", (char*)NULL);

以下を確認してください。そうしないと、アクセス許可拒否エラーが発生する可能性があります。

  1. 最初の引数は、スペース/path/your_fileを含まないでなければなりません
  2. 2 番目の引数は、最初の引数と同じ" your_file " でなければなりません
  3. 最後の引数は (char*)NULL でなければなりません
于 2013-12-11T02:41:25.330 に答える
0

ターミナルでコマンドを直接実行して、パスが正しいことと、このファイルを実行するための適切な権限があることを確認する必要があります。

/home/morts/Desktop/helloworld

機能する場合は、プログラムを実行しているユーザーにもそのファイルを実行する権限があることを確認する必要があります。

于 2013-04-16T13:07:48.180 に答える