can';t在指定的时间执行命令

can';t在指定的时间执行命令,c,C,我的程序有问题。当我调试它时,fd2是

我的程序有问题。当我调试它时,
fd2是<0
,如果是,就不会得到它。看看吧

printf("Enter file name: ");
scanf(" %s", file_name);

 printf("Enter file name2: ");
 scanf(" %s", file_name2);

fd=open(file_name, O_RDWR, S_IRWXU);
fd2=open(file_name2, O_RDWR, S_IRWXU);

if(fd2<0){
    printf("Error opening file!\n%s\n", strerror(errno));
    return(-1);
}

if(fd<0){
    printf("Error opening file!\n%s\n", strerror(errno));
    return(-1);
}
printf(“输入文件名:”);
scanf(“%s”,文件名);
printf(“输入文件名2:”);
scanf(“%s”,文件名2);
fd=打开(文件名,O_RDWR,S_IRWXU);
fd2=打开(文件名2、O\U RDWR、S\U IRWXU);
if(fd2
fd
,意思是“文件描述符”,是
open
返回的值,您可以使用
read
write
等函数对文件进行后续访问

它可以是除
-1
之外的任何整数值,用于告诉您打开文件时出错


fd工作正常。检查
open()
的返回值是否正确,如果
open()
失败意味着权限问题

fd=open(file_name, O_RDWR, S_IRWXU);
fd
是一个文件描述符,您可以使用

ls -l /proc/pid/fd
ls -l /proc/pid/fd   /* check here what value its prints */

#包括
int main(){
字符文件名[50],文件名2[50];
printf(“输入文件名:”);
scanf(“%s”,文件名);
int-fd,fd2;
printf(“输入文件名2:”);
scanf(“%s”,文件名2);
fd=打开(文件名,O_RDWR,S_IRWXU);
如果(fd<0){
printf(“打开文件时出错!\n%d\n”,strerror(errno));/*使用%d而不是%s*/
返回0;/*失败时open()返回0而不是-1*/
}
fd2=打开(文件名2、O\U RDWR、S\U IRWXU);
if(fd2<0){
printf(“打开文件时出错!\n%d\n”,strerror(errno));
返回0;
}
}

不需要C标记。我删除了它。当你在调试器中运行它时,你学到了什么?文件不存在?也许可以将
|O#u create
添加到标志中?如果(fd2将您的错误/调试作为文本而不是图像。谢谢,我在手册页上看到,如果发生错误,open将返回-1,因此我认为下面的所有内容0都将是打开错误。成功打开的文件描述符是非负的。唯一的错误值是
-1
;任何其他负值都是无效的文件描述符(如果与需要有效文件描述符的函数调用一起使用,则生成
EBADF
)。参见POSIX-成功完成后,这些函数将打开文件并返回一个表示文件描述符的非负整数。否则,这些函数将返回-1并设置
errno
,以指示错误。如果返回-1,则不会创建或修改任何文件。因此,我不同意以下断言:“
fd<0
而不是
-1
就可以了。”@JonathanLeffler,来自VC文档:“返回打开文件的文件描述符。返回值-1表示错误,在这种情况下设置了errno“。因此,这最多取决于编译器,必须检查编译器的文档。使用
%d
打印
strerror()
中的错误字符串不太可能产生有用的信息。
#include<errno.h>
int main() {

            char file_name[50],file_name2[50];
            printf("Enter file name: ");
            scanf(" %s", file_name);
            int fd,fd2;
            printf("Enter file name2: ");
            scanf(" %s", file_name2);

            fd=open(file_name, O_RDWR, S_IRWXU);
            if(fd < 0) {
                    printf("Error opening file!\n%d\n", strerror(errno));/* use  %d instead of %s */
                    return 0; /* upon failure open() returns 0 not -1 */
            }
            fd2=open(file_name2, O_RDWR, S_IRWXU);
            if(fd2 < 0) {
                    printf("Error opening file!\n%d\n", strerror(errno));
                    return 0;
            }
    }