编译完成但无法在ubuntu中执行错误“no such file or directory”

时间:2016-06-01 09:20:51

标签: c linux ubuntu compilation

我使用myfile.c编译器编译了一个名为gcc的短文件,如:

$ gcc myfile.c -o myapp

一切正常,我按照以下方式运行:

$ ./myapp

我得到了什么:

No such file or directory.

当我ls时,myapp仍在屏幕上,只是我无法运行它。但是我编译的其他一些文件仍能正常工作。我甚至删除了一些执行文件并再次编译它们并且工作顺利,所以我猜问题是在myfile.c中。

问题是:为什么文件在编译后存在,但内核无法通过警告“没有这样的文件或目录”实现它。

myfile.c我从beej.us复制以供学习:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
                    /* l_type   l_whence  l_start  l_len  l_pid   */
    struct flock fl = {F_WRLCK, SEEK_SET,   0,      0,     0 };
    int fd;

    fl.l_pid = getpid();

    if (argc > 1) 
        fl.l_type = F_RDLCK;

    if ((fd = open("lockdemo.c", O_RDWR)) == -1) {
        perror("open");
        exit(1);
    }

    printf("Press <RETURN> to try to get lock: ");
    getchar();
    printf("Trying to get lock...");

    if (fcntl(fd, F_SETLKW, &fl) == -1) {
        perror("fcntl");
        exit(1);
    }

    printf("got lock\n");
    printf("Press <RETURN> to release lock: ");
    getchar();

    fl.l_type = F_UNLCK;  /* set to unlock same region */

    if (fcntl(fd, F_SETLK, &fl) == -1) {
        perror("fcntl");
        exit(1);
    }

    printf("Unlocked.\n");

    close(fd);

    return 0;
}

0 个答案:

没有答案