1

私は持っています: inputinの代わりにsys_open()a.txt を渡すと、動作します。ただし、コマンドラインのユーザー名を取得する必要があるため、にコピーする必要がありますinput。ポインター変数を渡すと、機能しません。なんで?

int main()
{
    char *name;

    char input[1024];
    strcpy(input, argv[1]);

    name = input;

    sys_open(input, "O_RDWR", 00700);

}
4

2 に答える 2

3

へのフラグopen(なぜそれを と呼んでいるのかはわかりませんsys_open) は、文字列ではなく記号定数として渡されます。

open(input, O_RDWR, 00777);

有用なことを行うには、ほとんどの場合、戻り値をどこかに割り当てる必要があります。

于 2013-02-09T05:40:23.677 に答える
1

で試していただけますかsys_open(input, O_RDWR, 00777);。このコードを以下のように変更しましたが、うまく機能しています

#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>

int main(int argc, char* argv[])
{
char *name;
int   fd;
int   data = 0;

char input[1024];
strcpy(input, argv[1]);

//name = input;
fd = open((const char *)(input), O_RDWR, 00700);
printf("file descriptor: %x\n", fd);

read(fd, &data, 2);
printf("Data: %d\n", data);

return 0;
}
于 2013-02-09T05:05:19.880 に答える