도와주세요!!
Zterm 프로그램을 이용하여 학교 유닉스 서버에 접속하여 실습을 하고 있습니다.
실습 내용 중에 .c 파일을 만들어서 컴파일하고 open 명령어 입력 시 파일을 오픈하거나 새로 만드는 내용이 있습니다.
일단 코드가 간단하니 코드부터 올려볼게요.
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>
#define LOCKFILE "lockfile"
#define DELAY 10000000
void delay(void)
{
int i;
for (i = 0; i < DELAY; i++);
}
int main(void)
{
int fd, i;
while ((fd= open(LOCKFILE, O_WRONLY | O_CREAT | O_EXCL, 0644)) < 0) {
if (errno!= EEXIST) {
perror("open");
exit(1);
}
}
for (i = 'a'; i <= 'z'; i++) {
putchar(i);
fflush(stdout);
delay();
}
close(fd);
unlink(LOCKFILE);
return 0;
}
이 내용인데요.
실행하면 a부터 z까지 쭉쭉 써지는 내용입니다.
이걸 컴파일해 놓고 open을 입력하면 lockfile 이라는 파일이 만들어져야 한다고 하는데
open을 입력하면 open: 명령어가 없음 이라고 나오고 lockfile도 안만들어집니다.
컴파일 및 실행은 잘 되는데 저 파일은 왜 안만들어지는 것일까요??
관련 지식이 전무하여 이유도 전혀 모르겠습니다. 도와주세요!!
ㅡ.ㅡ;;
밑도끝도없이 셸에 open 이라고 입력하면, 그런명령어가 없으니 당연히 없다는 말이 나올겁니다.
open 이라는 입력이,,,만약 위의 소스를 컴파일한걸 실행하고자 하신거라면...
open 이라는 이름은 신경쓰지 마시구요- 컴파일시에 생성되는 바이너리 이름으로 실행하시면 됩니다.
예를들어 위의 소스파일이 delay.c 라고 할경우 gcc -o delay delay.c 이렇게 입력하면, 소스상에 에러가 없을경우
확장자 없는 delay 라는 파일이 생깁니다. 그 파일이 실행을 위한 실행바이너리구요.
그럼 실행을 해야되는데, 그냥 delay 라고 입력하면, 환경변수 PATH 내의 경로에서 delay라는 파일명을 찾기때문에,
해당 명령어가 없다고 나올거구요, 현재위치에 있는 delay 라는 명령을 내리셔야 합니다.
정리해드리면
1. 컴파일 : gcc -o hello hello.c ㅡ> hello 파일이 생성됨
2. 실행 : ./hello -> 원하시는 결과를 보실수 있을겁니다.