creatは新規にファイルを作成して、書き込み専用でオープンしたファイルディスクリプタを返します。
古いOSでは、openシステムコールでO_CREATフラグが存在しなかったため、openでファイルの新規作成ができませんでした。
2000年以後のOSならば、openシステムコールで新規ファイルを作成できるため、creatシステムコールを使用することはほとんど無くなったといえます。
なお、creatは下記のopenフラグと同等の処理となります。
open(path, O_WRONLY|O_CREAT|O_TRUNC, mode)
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <errno.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> /*! * @brief sample * @param[in] filepath ファイルパス名 * @return 0:success/-1:failure */ static int sample_func(char *filepath) { int fd = 0; fd = creat(filepath, 0644); if(fd < 0){ printf("Error: creat() %s: %s\n", strerror(errno), filepath); return(-1); } close(fd); return(0); } int main(int argc, char *argv[]) { int rc = 0; if(argc != 2){ fprintf(stderr, "Usage: %s <path>\n", argv[0]); exit(EXIT_FAILURE); } rc = sample_func(argv[1]); if(rc != 0) exit(EXIT_FAILURE); exit(EXIT_SUCCESS); }