프로그래밍 QnA

익명 사용자의 이미지

fork 관련 질문입니다. 아래소스를 봐주십시오.

#include
#include
#include
#include
#include
#include

void mysig(int signo);
int main( int argc , char *argv[] )
{
pid_t pid, cpid;
static struct sigaction act;

fprintf( stderr , "Parent %d....start!\n" , getpid() );
act.sa_handler = mysig;
sigaction(SIGALRM , &act , 0);
sigaction(SIGINT , &act , 0);
sigaction(SIGCHLD , &act , 0);
sigaction(SIGCLD , &act , 0);
sigaction(SIGTSTP , &act , 0);
alarm ( 1 );
pid = fork();
if ( pid == 0 ) /* Child */
{
fprintf( stderr , "Child %d....start!\n" , getpid() );

익명 사용자의 이미지

부동소숫점 연산(디바이스 드라이버) ???

디바이스 드라이버를 작성할 때 디바이스 드라이버 내에서의
부동소숫점 연산이 코드내에 존재하면 insmod 할때 아래와 같은 에러가
발생합니다...

insmod unresolved symbol __floatsidf
insmod unresolved symbol __fixunsdfsi
insmod unresolved symbol __muldf3
insmod unresolved symbol __adddf3

예를 들어, 다음과 같은 코드입니다...

void temp()
{
double x = 2.5;

x = x / 1.3;
}

해결방법이 없을까요? 부동 소숫점 연산을 아예 사용하지 않는 방법밖에
없나요?

제가 사용하는 플

익명 사용자의 이미지

소켓 관련 질문~!!

서버에서 임의로 접속을 끊었을 경우, 클라이언트에서는 끊어지지 않는 것은 왜 그런가요?

strace로 보니, 접속이 끊어진 후에도 send, recv 값이 -1로 나오지 않던데 그건 왜 그런가요?

watch -n 1 "netstat -an|grep ESTABLISH"로 접속을 확인하면서 테스트 해 보았는데 분명 접속은 끊어졌거든요... 근데 어찌하여 send, recv error가 나지 않는건지...

왜 그런가요? 그리고 해결책은 무엇인가요?

익명 사용자의 이미지

SO_LINGER

#include
#include
#include
#include
#include
#include

int main(){
int sockfd,optlen,ti;
struct linger ling;
if( (sockfd = socket(AF_INET, SOCK_STREAM, 0))< 0){
perror("socket error");
}

optlen = sizeof(ling);
if( getsockopt(sockfd,SOL_SOCKET, SO_LINGER,
(struct linger*)&ling,&optlen) < 0){
perror("getsockopt error");
}
ti = ling.l_linger;
printf("SOCK LINGER TIME = %d %
d\n",ti,ling.l_onoff);

익명 사용자의 이미지

incompatible pointer type - warnings

물리학관련 계산 프로그램중에 사용되는 라이브러리 화일을 만드는 과정에
아래와 같은 경고 메세지가 나오고, 어쨌거나 컴파일된 libgk.a 를 링크시
켜 필요한 프로그램을 gdb에서 돌렸을때 아래와 같은 결과가 나왔습니다.
gcc 2.7.2.3 과 g77 2.91.57 버전에서는 잘 돌아갔다는데...
지금 사용하는 오에스는 레드헷7.1입니다. 고수님들 아래의 메세지들만
보시고도 무엇이 문제인지 알아낼 수 있나요? 아니면 화일들을 직접 봐야
만 하나요??? 많은 조언 부탁합니다.

익명 사용자의 이미지

[질문]실행중인 서버에서 특정값을 다른 서버로 보내기

데몬으로 떠 있는 서버에서 특정 값을 다른 서버프로그램에 있는 곳으로
보낸후에 그곳에서 데이타를 받을려고 합니다.

A 서버프로그램이 실행되면서 여러가지 작업을 수행중에 특정값만 A에서
B 서버 프로그램에 데이타를 보내고 B에서 처리한 값을 다시 A로 받아야
되는데요..

제 생각으로는 A에서 데이타를 보낼때 B에 맞는 C 클라이언트 프로그램을
만들면 될것 같은데요 이렇게 했을때 A에서 보내는 데이타를 C클라이언트
프로그램에 어떻

익명 사용자의 이미지

프로세스그룹 및 세션에 관한 정리를 해봤는데요..

보시고, 덧붙일말씀이나 잘못된점 있으면 짚어주싶시오.
1. 최초 부모프로세스(포크전)는 pid(프로세스식별번호), pgrp(프로세스그
룹식별번호)
가 동일하게 생성(최초프로세스는 프로세스그룹리더가 된다고 함.)
2. fork 후 자식, 재fork후 손자들의 프로세스그룹식별번호가
부모의 프로세스그룹식별번호와 동일 ( 자식프로세스에서 getpgrp로 검사)
3. session id 또한 1,2번 사이에 모두 동일
4. 단말기마다 세션id가 다름(-ksh)
5. kill -9 상대방sessionid 가능(단말기 없어짐)

익명 사용자의 이미지

[질문] 특정호스트의 ip만 가져오는 쉘스크립트

제가 ping을 이용해서 특정ip를 가져왔거든요.

netip="`ping -c 1 xxxxxxx.com |
awk '/64 bytes from/ {sub(/from/,"",$1); print $4 }' |
sed "s/\//g"`"
사정상 ping을 사용하기에는 문제가 있습니다.

nslookup 을 이용해서 가져오고 싶은데,..
쉘 스크립트가 많이많이 부족해서.....

좀 도와주세요....

익명 사용자의 이미지

배열 해제?

소켓 플밍을 하거 있습니다.. 데몬작업.. 쓰레드거..
근데 자꾸 세그먼트 폴트가 일어나네여 ㅠ.ㅠ 잘돌다가 ㅠ.ㅠ
core파일 보면 메모리 부족이라거 나오는데......
쩌비.. 많은양의 데이타를 받습니다..
각 쓰레드들은 하나 처리 하고 죽고.. 하는데엽..

배열도 메모리 해제해줘야 하나엽??... 어케여??
해제 해준다거 free 써서 많이 해줬는데도.. ㅠ.ㅠ 문제들이 발생
프로세스가 사용중인 메모리 보면.. 메모리 어쩔땐 엄청 올라갑니다.
아 세그 먼트 폴트 땜시 죽것듬다 ㅠ.ㅠ

익명 사용자의 이미지

클라이언트와 접속을 유지 하고 싶은데요

클라이언트가 요청한 데이타를 보내면 서버가 접속을 끊어 버리네요.

다른 데이타도 한번 접속이 된 상태에서 데이타를 주고 받아야 되는데요.

서버에서 접속이 계속 유지 될수 있게 할려면 어떻게 처리를 해줘야 되나
요?

int main(int argc,char *argv[]){
char strBuffer[bufsize];
int server_fd,client_fd,clilen,size;
struct sockaddr_in client_addr, server_addr;
pid_t pid;
....

if(bind(server_fd,(struct sockaddr *)&server_addr,sizeof(server_addr))<0)
{
printf("Server Can't bind local address.\n");

페이지

프로그래밍 QnA 구독하기