C에서 파일이 파일이 열려 있는지 아닌지 아는 방법 좀...

익명 사용자의 이미지

특정 디렉토리를 열어서 그 안의 파일들 가운데, 현재 다른 프로세스에서
사용하고 있는 파일을 체크하려고 합니다.

쉘상의 툴이나 유틸리티 사용하지 않고 C 프로그램으로 구현하려고 하는
데, 힌트 좀 주십시오.

감사합니다.

익명 사용자의 이미지

열려 있는 파일의 이름을 바꾸려고 시도하면 당연히 에러가 나겠죠?
이 예외를 체크하면 됩니다.

익명 사용자의 이미지

[root@tttt 7849]# pwd
/proc/7849
[root@tttt 7849]# tree
.
|-- cmdline
|-- cwd -> /home/oracle/prod/ora816i/dbs
|-- environ
|-- exe -> /home/oracle/prod/ora816i/bin/oracle
|-- fd
| |-- 0 -> /dev/null
| |-- 1 -> /dev/null
| |-- 10 -> /home/oracle/prod/ora816i/rdbms/audit/ora_7825.aud
| |-- 2 -> /dev/null
| |-- 3 -> /dev/null
| |-- 4 -> /dev/null
| |-- 5 -> /dev/null
| |-- 6 -> /dev/null
| |-- 7 -> /home/oracle/prod/ora816i/admin/songdb/bdump/alert_ORCL.log
| |-- 8 -> /home/oracle/prod/ora816i/rdbms/mesg/oraus.msb
| `-- 9 -> socket[15326370]
|-- maps
|-- mem
|-- root -> /
|-- stat
|-- statm
`-- status

프로세스에서 파일을 열면 fd를 할당 받으니..
프로세스 fd정보를 조회하면.. 원하는 바를 얻지 않을까요?