모듈화 분할. 컴파일 시 too few arguments to functon 오류..

domiisa의 이미지

daemon.c 한파일에 있던걸 모듈화로 분할 했는데 컴파일 오류가 납니다.
daemon.c:18:too few arguments to functon 'socket'
이 오류가 뜨는데 검색해보니 인자의 수가 적거나 맞지 않다라고 나오는데 인자가 없는데 왜 뜨는지 모르겠네요

daemon.c 파일

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stddef.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <stdlib.h>
#include "uds.h"
int main(int argc, char** argv)
{
	int fd;
	fd=socket();
	char buf[] = "aaaaaaaaaaaaaa";
 
	write(fd, buf, strlen(buf));
 
	char buff[1024];
	memset(buff,0,1024);
	read(fd,buff,sizeof(buff));
	printf("server : %s\n",buff);
 
	bail:
	close(fd);
	return 0;
}

socket.c 파일

#include "uds.h"
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stddef.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <stdlib.h>
 
//extern struct sockaddr_un sockAddr;
//extern socklen_t sockLen;
 
int makeAddr(const char* name, struct sockaddr_un* pAddr, socklen_t* pSockLen)
{
	int nameLen = strlen(name);
 
	if (nameLen >= (int) sizeof(pAddr->sun_path) -1)
		return -1;
	pAddr->sun_path[0] = '\0';
	strcpy(pAddr->sun_path+1, name);
	pAddr->sun_family = AF_UNIX;
	*pSockLen = 1 + nameLen + offsetof(struct sockaddr_un, sun_path);
	return 0;
}
int socket()
{
	struct sockaddr_un sockAddr;
	socklen_t sockLen;
 
	int fd = socket(PF_UNIX, SOCK_STREAM, 0);
	/* 소켓생성실패 */
	if (fd < 0) {
		perror("client socket() error");
		return 1;
	}
 
	if (makeAddr("com.extrus.test.uds", &sockAddr, &sockLen) < 0)
		return 1;
 
	if (connect(fd,(const struct sockaddr*) &sockAddr,sockLen) <0 )
	{
		perror("connect error");
		goto bail;
	}
	return fd;
}

uds.h 파일

#ifndef __UDS_H
#define __UDS_H
 
int socket();
int makeAddr(const char* name, struct sockaddr_un* pAddr, socklen_t* pSockLen);
 
#endif

마냥의 이미지

#include <sys/socket.h> 에

int socket(int domain, int type, int protocol);

라고 정의된게 있어서 그런가 보네요. 함수 이름을 바꿔보세요.

$ whatis socket
Socket (3pm) - load the C socket.h defines and structure manipulators
socket (2) - create an endpoint for communication
socket (3p) - create an endpoint for communication
socket (7) - Linux socket interface
socket (n) - Open a TCP network connection
socket [] (2) - create an endpoint for communication
socket [] (7) - Linux socket interface
socket [] (n) - Open a TCP network connection
$ man 3p socket

c는 함수 이름이 같으면 안됩니다.

Gentoo Rules!

익명 사용자의 이미지

아 ㄳ합니다 해결 댓네요^^;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.