본문 바로가기
728x90

프로그래밍13

C언어에서 bool type 사용법 일반적으로 C언어에서는 primitive로 bool type을 지원하지 않는 것으로 알고 있다. 하지만, C99 표준에 의하면, C에서도 bool type을 지원하고, stdbool.h에 bool type이 포함되어 있다. stdbool.h를 보면, #define bool _Bool 로 정의되어 있다. 실제로 gcc에서 stdbool.h를 include 시키지 않더라도, _Bool을 사용하면 된다. 실제 primitive는 _BOOL인 것이다. 하지만 일반적으로, C++과의 호환을 위해 stdbool.h를 include한 후, 사용한다. 사실 아직도 오래된 코드들을 보면, typedef unsigned char BOOL 과 같은 형태로 구현된 것을 많이 볼 수 있다. 리눅스 6.2를 기준으로, stdbo.. 2013. 9. 11.
expect를 이용한 자동화(3) - 원격 장비 passwd 변경 expect에 대한 설명은 expect를 이용한 자동화(1) - ssh 를 참조하기 바란다. 여기서는 expect를 이용해서 원격 장비의 passwd를 자동으로 변경하는 쉘을 만들어 보겠다. 서버가 여러 대일 경우, 동시에 passwd변경 시 유용하게 사용할 수 있다. 파일명 passwd.exp 파일 내용 #!/usr/bin/expect proc usage {} { puts "usage: ip_address old_password new_passwd" exit 1 } set argc [llength $argv] if { $argc != 4 } { usage } set timeout -1 set HOST [lindex $argv 0] set USERID [lindex $argv 1] set PASSWD [.. 2013. 9. 3.
expect를 이용한 자동화(2) - scp expect에 대한 설명은 expect를 이용한 자동화(1) - ssh 를 참조하기 바란다. 여기서는 expect를 이용해서 scp의 자동으로 passwd를 입력하고, 원격복사하는 쉘을 만들어 보겠다. 파일명 scp.exp 파일 내용 #!/usr/bin/expect proc usage {} { puts "usage: src target id password" exit 1 } set argc [llength $argv] if { $argc != 4 } { usage } set timeout -1 set SRC_PATH [lindex $argv 0] set TARGET_PATH [lindex $argv 1] set TARGET_ID [lindex $argv 2] set PASSWD [lindex $argv .. 2013. 9. 3.
expect를 이용한 자동화(1) - ssh expect는 리눅스 혹은 유닉스에 있는 script language이다. 일반 쉘을 이용할 경우, ssh, scp, passwd 변경등을 할 때, script로 처리할 수 없고, console창에 interactive하게 입력해야 한다. 이럴 경우에 사용할 수 있는 script language가 expect이다. expect는 화면에 특정 문자열이 왔을 때, 응답으로 어떤 문자열로 응답하는 식의 처리가 가능하다. 이를 이용해 ssh 자동 접속 쉘, scp 접속 쉘, passwd 변경 쉘 등을 만들어 보겠다. expect에 대해서 더 정확한 문법을 알고 싶다면, 다음 URL을 참조하기 바란다. URL : http://search.cpan.org/~rgiersig/Expect-1.21/Expect.pod .. 2013. 9. 3.
multi-thread 환경에서 signal 사용 일반적으로 multi-thread 환경에서는 signal을 잘 사용하지 않지만, 불가피하게 signal을 사용하게 되는 경우가 생길 수 있다. 하지만 signal의 특성상 signal은 특정 process를 지정해서 보내는 것이지 특정 thread로 전달되는 것이 아니기 때문에 process 내의 어떤 thread에서 signal을 받아 처리할지 모른다. 예를 들어 main thread와 thread1, thread2가 있다고 가정하면 main thread에서 signal handler를 지정하더라도, signal handler에서 처리되지 않고, thread1 혹은 thread2로 signal이 전달될 수 있다. 그러므로 이 경우에는 다음 그림과 같은 특별한 처리가 필요하다. 그림에 관해서 간략히 설명.. 2013. 9. 2.
728x90