moon_rabbit 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +18 -67
- data/lib/moon_rabbit.rb +46 -53
- data/lib/moon_rabbit/Rakefile.rb +37 -0
- data/lib/moon_rabbit/version.rb +1 -1
- data/moon_rabbit.gemspec +3 -3
- data/sample/Makefiles.rb +10 -22
- data/sample/Rakefile +3 -40
- metadata +6 -8
- data/sample/Makefile.process +0 -39
- data/sample/process.c +0 -35
- data/sample/watch.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59063aa3cca34929f0bfa18b0d327478d2499379
|
4
|
+
data.tar.gz: 88eca6098afe03eef4877e1a58b0cc736499b46d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64d39f4dc19785b10b4e94e5192d4457fc3c48a7a57a65564b6f541043becbd4fe42ea651d65f316e24a06810b12b78a9c3124b4968015237b5636358b8bbb16
|
7
|
+
data.tar.gz: e93ebc33eaa3f0ff9f739343b75e11105e1798ae26452c2dcc1f253967575a1706a2c5f58aea3e305dabc7867fa3dddce6dfe93d02f2ddf89fbbc70136ab93f0
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# MoonRabbit
|
2
2
|
|
3
|
-
Briefly build
|
3
|
+
Briefly build scripts.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -20,85 +20,36 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
[Makefiles.rb]
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
obj_dir "obj"
|
34
|
-
compile_option "-Iinc -g -Wall -O2"
|
35
|
-
}
|
36
|
-
|
37
|
-
Makefiles.add Makefile.new( "Makefile.process" ){
|
38
|
-
compiler "gcc"
|
39
|
-
main_target "process"
|
40
|
-
srcs [
|
41
|
-
"process.c"
|
42
|
-
]
|
43
|
-
obj_dir "obj"
|
44
|
-
compile_option "-g -Wall -O2"
|
23
|
+
MoonRabbit::Makefiles.add MoonRabbit::Makefile.new{
|
24
|
+
path "Makefile"
|
25
|
+
compiler "gcc"
|
26
|
+
main_target "main"
|
27
|
+
srcs [
|
28
|
+
"src/main.c",
|
29
|
+
"src/sub.c"
|
30
|
+
]
|
31
|
+
obj_dir "obj"
|
32
|
+
compile_option "-Iinc -g -Wall -O2"
|
45
33
|
}
|
46
34
|
|
47
35
|
[Rakefile]
|
48
36
|
|
49
37
|
require "moon_rabbit"
|
50
|
-
|
51
|
-
|
52
|
-
def make( option )
|
53
|
-
Makefiles.file_paths.each{|file_path|
|
54
|
-
sh "make #{option} -f #{file_path}"
|
55
|
-
}
|
56
|
-
end
|
57
|
-
|
58
|
-
task :default => [ :all ]
|
38
|
+
require "moon_rabbit/Rakefile"
|
39
|
+
require "./Makefiles"
|
59
40
|
|
60
|
-
|
61
|
-
task :all do |t, args|
|
62
|
-
require "./Makefiles"
|
63
|
-
|
64
|
-
make Options.to_s
|
65
|
-
end
|
66
|
-
|
67
|
-
desc "Clean Build"
|
68
|
-
task :clean do |t, args|
|
69
|
-
require "./Makefiles"
|
70
|
-
|
71
|
-
make "clean"
|
72
|
-
end
|
73
|
-
|
74
|
-
desc "Remove Makefiles"
|
75
|
-
task :rm do |t, args|
|
76
|
-
require "./Makefiles"
|
77
|
-
|
78
|
-
Makefiles.file_paths.each{|file_path|
|
79
|
-
sh "rm -f #{file_path}"
|
80
|
-
}
|
81
|
-
end
|
82
|
-
|
83
|
-
desc "Output Makefiles"
|
84
|
-
task :output do |t, args|
|
85
|
-
require "./Makefiles"
|
86
|
-
|
87
|
-
Makefiles.each{|makefile|
|
88
|
-
makefile.output
|
89
|
-
}
|
90
|
-
end
|
41
|
+
task :default => [ :build ]
|
91
42
|
|
92
43
|
[bash]
|
93
44
|
|
94
|
-
rake output
|
95
|
-
|
45
|
+
rake output # Output Makefile
|
46
|
+
rake build # Build Makefile
|
96
47
|
|
97
|
-
|
48
|
+
./main
|
98
49
|
|
99
50
|
## Contributing
|
100
51
|
|
101
|
-
1. Fork it ( http://github.com
|
52
|
+
1. Fork it ( http://github.com/liveralmask/moon_rabbit/fork )
|
102
53
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
103
54
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
104
55
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/lib/moon_rabbit.rb
CHANGED
@@ -2,12 +2,14 @@ require "moon_rabbit/version"
|
|
2
2
|
|
3
3
|
module MoonRabbit
|
4
4
|
class Makefile
|
5
|
-
attr_accessor :
|
5
|
+
attr_accessor :files, :compiles, :links
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
7
|
+
def initialize( &block )
|
8
|
+
@files = {
|
9
|
+
:path => "",
|
10
|
+
}
|
9
11
|
|
10
|
-
@
|
12
|
+
@compiles = {
|
11
13
|
:compiler => "",
|
12
14
|
:main_target => "",
|
13
15
|
:srcs => [],
|
@@ -15,7 +17,7 @@ module MoonRabbit
|
|
15
17
|
:options => [],
|
16
18
|
}
|
17
19
|
|
18
|
-
@
|
20
|
+
@links = {
|
19
21
|
:static_libs => [],
|
20
22
|
:options => [],
|
21
23
|
}
|
@@ -24,29 +26,37 @@ module MoonRabbit
|
|
24
26
|
end
|
25
27
|
|
26
28
|
def add( makefile )
|
27
|
-
makefile.
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
makefile.files.each{|key, value|
|
30
|
+
@files[ key ] = value
|
31
|
+
}
|
32
|
+
|
33
|
+
makefile.compiles.each{|key, value|
|
34
|
+
if @compiles[ key ].instance_of?( String )
|
35
|
+
@compiles[ key ] = value
|
36
|
+
elsif @compiles[ key ].instance_of?( Array )
|
37
|
+
@compiles[ key ].concat value
|
32
38
|
end
|
33
39
|
}
|
34
40
|
|
35
|
-
makefile.
|
36
|
-
@
|
41
|
+
makefile.links.each{|key, value|
|
42
|
+
@links[ key ].concat value
|
37
43
|
}
|
38
44
|
end
|
39
45
|
|
46
|
+
def path( path )
|
47
|
+
@files[ :path ] = path
|
48
|
+
end
|
49
|
+
|
40
50
|
def compiler( compiler )
|
41
|
-
@
|
51
|
+
@compiles[ :compiler ] = compiler
|
42
52
|
end
|
43
53
|
|
44
54
|
def main_target( main_target )
|
45
|
-
@
|
55
|
+
@compiles[ :main_target ] = main_target
|
46
56
|
end
|
47
57
|
|
48
58
|
def src( src )
|
49
|
-
@
|
59
|
+
@compiles[ :srcs ].push src
|
50
60
|
end
|
51
61
|
|
52
62
|
def srcs( srcs )
|
@@ -56,11 +66,11 @@ module MoonRabbit
|
|
56
66
|
end
|
57
67
|
|
58
68
|
def obj_dir( obj_dir )
|
59
|
-
@
|
69
|
+
@compiles[ :obj_dir ] = obj_dir
|
60
70
|
end
|
61
71
|
|
62
72
|
def compile_option( compile_option )
|
63
|
-
@
|
73
|
+
@compiles[ :options ].push compile_option
|
64
74
|
end
|
65
75
|
|
66
76
|
def compile_options( compile_options )
|
@@ -70,7 +80,7 @@ module MoonRabbit
|
|
70
80
|
end
|
71
81
|
|
72
82
|
def static_lib( static_lib )
|
73
|
-
@
|
83
|
+
@links[ :static_libs ].push static_lib
|
74
84
|
end
|
75
85
|
|
76
86
|
def static_libs( static_libs )
|
@@ -80,7 +90,7 @@ module MoonRabbit
|
|
80
90
|
end
|
81
91
|
|
82
92
|
def link_option( link_option )
|
83
|
-
@
|
93
|
+
@links[ :options ].push link_option
|
84
94
|
end
|
85
95
|
|
86
96
|
def link_options( link_options )
|
@@ -90,38 +100,34 @@ module MoonRabbit
|
|
90
100
|
end
|
91
101
|
|
92
102
|
def output
|
93
|
-
return if @file_path.nil?
|
94
|
-
|
95
103
|
objs = []
|
96
104
|
deps = []
|
97
|
-
@
|
98
|
-
obj = "#{@
|
105
|
+
@compiles[ :srcs ].each{|src|
|
106
|
+
obj = "#{@compiles[ :obj_dir ]}/#{change_ext( src, '.o' )}"
|
99
107
|
objs.push obj
|
100
|
-
deps.push
|
108
|
+
deps.push change_ext( obj, ".d" )
|
101
109
|
}
|
102
|
-
src_ext =
|
103
|
-
main_target_ext = File.extname( @
|
110
|
+
src_ext = File.extname( @compiles[ :srcs ].first )
|
111
|
+
main_target_ext = File.extname( @compiles[ :main_target ] )
|
104
112
|
|
105
|
-
open( @
|
113
|
+
open( @files[ :path ], "wb" ){|f|
|
106
114
|
f.puts <<EOS
|
107
|
-
COMPILER
|
108
|
-
override COMPILE_OPTIONS += #{@
|
109
|
-
override LINK_OPTIONS += #{@
|
110
|
-
override STATIC_LIBS += #{@
|
115
|
+
override COMPILER += #{@compiles[ :compiler ]}
|
116
|
+
override COMPILE_OPTIONS += #{@compiles[ :options ].join( " " )}
|
117
|
+
override LINK_OPTIONS += #{@links[ :options ].join( " " )}
|
118
|
+
override STATIC_LIBS += #{@links[ :static_libs ].join( " " )}
|
111
119
|
RM = rm -f
|
112
120
|
MKDIR = mkdir -p
|
113
|
-
MAIN_TARGET = #{@
|
114
|
-
SRCS = #{@
|
115
|
-
OBJ_DIR = #{@
|
121
|
+
MAIN_TARGET = #{@compiles[ :main_target ]}
|
122
|
+
SRCS = #{@compiles[ :srcs ].join( " " )}
|
123
|
+
OBJ_DIR = #{@compiles[ :obj_dir ]}
|
116
124
|
OBJS = #{objs.join( " " )}
|
117
125
|
DEPS = #{deps.join( " " )}
|
118
126
|
|
119
|
-
.PHONY: all
|
127
|
+
.PHONY: all clean
|
120
128
|
|
121
129
|
all: $(MAIN_TARGET)
|
122
130
|
|
123
|
-
obj: $(OBJS)
|
124
|
-
|
125
131
|
clean:
|
126
132
|
$(RM) $(MAIN_TARGET)
|
127
133
|
$(RM) $(OBJS)
|
@@ -129,8 +135,7 @@ clean:
|
|
129
135
|
|
130
136
|
EOS
|
131
137
|
|
132
|
-
|
133
|
-
f.puts <<EOS
|
138
|
+
f.puts <<EOS
|
134
139
|
$(OBJ_DIR)/%.o: %#{src_ext}
|
135
140
|
@[ -e $(dir $@) ] || $(MKDIR) $(dir $@)
|
136
141
|
|
@@ -143,7 +148,6 @@ $(OBJ_DIR)/%.o: %#{src_ext}
|
|
143
148
|
-include $(DEPS)
|
144
149
|
|
145
150
|
EOS
|
146
|
-
end
|
147
151
|
|
148
152
|
case main_target_ext
|
149
153
|
when ".a"
|
@@ -168,8 +172,7 @@ EOS
|
|
168
172
|
}
|
169
173
|
end
|
170
174
|
|
171
|
-
|
172
|
-
def sub_ext( file_path, ext )
|
175
|
+
def change_ext( file_path, ext )
|
173
176
|
"#{File.dirname( file_path )}/#{File.basename( file_path, '.*' )}#{ext}"
|
174
177
|
end
|
175
178
|
end
|
@@ -192,7 +195,7 @@ EOS
|
|
192
195
|
end
|
193
196
|
|
194
197
|
def self.file_paths
|
195
|
-
@@makefiles.collect{|makefile| makefile.
|
198
|
+
@@makefiles.collect{|makefile| makefile.files[ :path ]}
|
196
199
|
end
|
197
200
|
|
198
201
|
def self.clear
|
@@ -211,14 +214,4 @@ EOS
|
|
211
214
|
@@options.collect{|key, value| "#{key}='#{value}'"}.join( " " )
|
212
215
|
end
|
213
216
|
end
|
214
|
-
|
215
|
-
module PermanentProcess
|
216
|
-
def self.watch( command, &block )
|
217
|
-
begin
|
218
|
-
pid = Process.spawn( command )
|
219
|
-
|
220
|
-
Process.waitpid( pid )
|
221
|
-
end while instance_exec( $?, &block )
|
222
|
-
end
|
223
|
-
end
|
224
217
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
def file_paths
|
2
|
+
ENV.key?( "FILE_PATHS" ) ? ENV[ "FILE_PATHS" ].split( /\s+/ ) : MoonRabbit::Makefiles.file_paths
|
3
|
+
end
|
4
|
+
|
5
|
+
desc "Clean"
|
6
|
+
task :clean do |task, args|
|
7
|
+
file_paths.each{|file_path|
|
8
|
+
sh "make clean -f #{file_path}"
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Build"
|
13
|
+
task :build do |task, args|
|
14
|
+
file_paths.each{|file_path|
|
15
|
+
sh "make #{MoonRabbit::Options} -f #{file_path}"
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "Remove Makefiles"
|
20
|
+
task :remove do |task, args|
|
21
|
+
file_paths.each{|file_path|
|
22
|
+
sh "rm -f #{file_path}"
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "Output Makefiles"
|
27
|
+
task :output do |task, args|
|
28
|
+
MoonRabbit::Makefiles.each{|makefile|
|
29
|
+
makefile.output
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "Show Variables"
|
34
|
+
task :show do |task, args|
|
35
|
+
puts "[file_paths] #{file_paths.join( ' ' )}"
|
36
|
+
puts "[options] #{MoonRabbit::Options}"
|
37
|
+
end
|
data/lib/moon_rabbit/version.rb
CHANGED
data/moon_rabbit.gemspec
CHANGED
@@ -8,9 +8,9 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = MoonRabbit::VERSION
|
9
9
|
spec.authors = ["liveralmask"]
|
10
10
|
spec.email = ["liveralmask.lisk@gmail.com"]
|
11
|
-
spec.summary = %q{Briefly build
|
12
|
-
spec.description = %q{Briefly build
|
13
|
-
spec.homepage = ""
|
11
|
+
spec.summary = %q{Briefly build scripts.}
|
12
|
+
spec.description = %q{Briefly build scripts.}
|
13
|
+
spec.homepage = "https://github.com/liveralmask/moon_rabbit"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
data/sample/Makefiles.rb
CHANGED
@@ -1,23 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
obj_dir "obj"
|
12
|
-
compile_option "-Iinc -g -Wall -O2"
|
1
|
+
MoonRabbit::Makefiles.add MoonRabbit::Makefile.new{
|
2
|
+
path "Makefile"
|
3
|
+
compiler "gcc"
|
4
|
+
main_target "main"
|
5
|
+
srcs [
|
6
|
+
"src/main.c",
|
7
|
+
"src/sub.c"
|
8
|
+
]
|
9
|
+
obj_dir "obj"
|
10
|
+
compile_option "-Iinc -g -Wall -O2"
|
13
11
|
}
|
14
|
-
|
15
|
-
Makefiles.add Makefile.new( "Makefile.process" ){
|
16
|
-
compiler "gcc"
|
17
|
-
main_target "process"
|
18
|
-
srcs [
|
19
|
-
"process.c"
|
20
|
-
]
|
21
|
-
obj_dir "obj"
|
22
|
-
compile_option "-g -Wall -O2"
|
23
|
-
}
|
data/sample/Rakefile
CHANGED
@@ -1,42 +1,5 @@
|
|
1
1
|
require "moon_rabbit"
|
2
|
-
|
2
|
+
require "moon_rabbit/Rakefile"
|
3
|
+
require "./Makefiles"
|
3
4
|
|
4
|
-
|
5
|
-
Makefiles.file_paths.each{|file_path|
|
6
|
-
sh "make #{option} -f #{file_path}"
|
7
|
-
}
|
8
|
-
end
|
9
|
-
|
10
|
-
task :default => [ :all ]
|
11
|
-
|
12
|
-
desc "All Build"
|
13
|
-
task :all do |t, args|
|
14
|
-
require "./Makefiles"
|
15
|
-
|
16
|
-
make Options.to_s
|
17
|
-
end
|
18
|
-
|
19
|
-
desc "Clean Build"
|
20
|
-
task :clean do |t, args|
|
21
|
-
require "./Makefiles"
|
22
|
-
|
23
|
-
make "clean"
|
24
|
-
end
|
25
|
-
|
26
|
-
desc "Remove Makefiles"
|
27
|
-
task :rm do |t, args|
|
28
|
-
require "./Makefiles"
|
29
|
-
|
30
|
-
Makefiles.file_paths.each{|file_path|
|
31
|
-
sh "rm -f #{file_path}"
|
32
|
-
}
|
33
|
-
end
|
34
|
-
|
35
|
-
desc "Output Makefiles"
|
36
|
-
task :output do |t, args|
|
37
|
-
require "./Makefiles"
|
38
|
-
|
39
|
-
Makefiles.each{|makefile|
|
40
|
-
makefile.output
|
41
|
-
}
|
42
|
-
end
|
5
|
+
task :default => [ :build ]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moon_rabbit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- liveralmask
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,7 +38,7 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
description: Briefly build
|
41
|
+
description: Briefly build scripts.
|
42
42
|
email:
|
43
43
|
- liveralmask.lisk@gmail.com
|
44
44
|
executables: []
|
@@ -51,17 +51,15 @@ files:
|
|
51
51
|
- README.md
|
52
52
|
- Rakefile
|
53
53
|
- lib/moon_rabbit.rb
|
54
|
+
- lib/moon_rabbit/Rakefile.rb
|
54
55
|
- lib/moon_rabbit/version.rb
|
55
56
|
- moon_rabbit.gemspec
|
56
|
-
- sample/Makefile.process
|
57
57
|
- sample/Makefiles.rb
|
58
58
|
- sample/Rakefile
|
59
59
|
- sample/inc/sub.h
|
60
|
-
- sample/process.c
|
61
60
|
- sample/src/main.c
|
62
61
|
- sample/src/sub.c
|
63
|
-
|
64
|
-
homepage: ''
|
62
|
+
homepage: https://github.com/liveralmask/moon_rabbit
|
65
63
|
licenses:
|
66
64
|
- MIT
|
67
65
|
metadata: {}
|
@@ -84,5 +82,5 @@ rubyforge_project:
|
|
84
82
|
rubygems_version: 2.2.2
|
85
83
|
signing_key:
|
86
84
|
specification_version: 4
|
87
|
-
summary: Briefly build
|
85
|
+
summary: Briefly build scripts.
|
88
86
|
test_files: []
|
data/sample/Makefile.process
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
COMPILER = gcc
|
2
|
-
override COMPILE_OPTIONS += -g -Wall -O2
|
3
|
-
override LINK_OPTIONS +=
|
4
|
-
override STATIC_LIBS +=
|
5
|
-
RM = rm -f
|
6
|
-
MKDIR = mkdir -p
|
7
|
-
MAIN_TARGET = process
|
8
|
-
SRCS = process.c
|
9
|
-
OBJ_DIR = obj
|
10
|
-
OBJS = obj/./process.o
|
11
|
-
DEPS = obj/./process.d
|
12
|
-
|
13
|
-
.PHONY: all obj clean
|
14
|
-
|
15
|
-
all: $(MAIN_TARGET)
|
16
|
-
|
17
|
-
obj: $(OBJS)
|
18
|
-
|
19
|
-
clean:
|
20
|
-
$(RM) $(MAIN_TARGET)
|
21
|
-
$(RM) $(OBJS)
|
22
|
-
$(RM) $(DEPS)
|
23
|
-
|
24
|
-
$(OBJ_DIR)/%.o: %.c
|
25
|
-
@[ -e $(dir $@) ] || $(MKDIR) $(dir $@)
|
26
|
-
|
27
|
-
$(COMPILER) $(COMPILE_OPTIONS) -c $< -o $@
|
28
|
-
|
29
|
-
@$(COMPILER) $(COMPILE_OPTIONS) -MM -MG -MP $< \
|
30
|
-
| sed "s/.*\.o/$(subst /,\/,$@) $(subst /,\/,$(patsubst %.o,%.d,$@))/g" > $(patsubst %.o,%.d,$@); \
|
31
|
-
[ -s $(patsubst %.o,%.d,$@) ] || $(RM) $(patsubst %.o,%.d,$@)
|
32
|
-
|
33
|
-
-include $(DEPS)
|
34
|
-
|
35
|
-
$(MAIN_TARGET): $(OBJS) $(STATIC_LIBS)
|
36
|
-
@[ -e $(dir $@) ] || $(MKDIR) $(dir $@)
|
37
|
-
|
38
|
-
$(COMPILER) $(LINK_OPTIONS) -o $@ $^
|
39
|
-
|
data/sample/process.c
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
#include <stdio.h>
|
2
|
-
#include <unistd.h>
|
3
|
-
#include <signal.h>
|
4
|
-
#include <string.h>
|
5
|
-
#include <stdlib.h>
|
6
|
-
#include <stdbool.h>
|
7
|
-
|
8
|
-
static bool g_IsContinue = true;
|
9
|
-
|
10
|
-
void signal_handler( int value, siginfo_t* info, void * context ){
|
11
|
-
printf( "signal_handler: value=%d\n", value );
|
12
|
-
|
13
|
-
if ( SIGTERM == value ){
|
14
|
-
g_IsContinue = false;
|
15
|
-
}
|
16
|
-
}
|
17
|
-
|
18
|
-
int main( int argc, char* argv[] ){
|
19
|
-
int result = 0;
|
20
|
-
if ( argc <= 1 ){
|
21
|
-
struct sigaction new_action;
|
22
|
-
memset( &new_action, 0, sizeof( new_action ) );
|
23
|
-
new_action.sa_sigaction = signal_handler;
|
24
|
-
new_action.sa_mask = 0;
|
25
|
-
new_action.sa_flags = SA_SIGINFO | SA_NOCLDWAIT;
|
26
|
-
sigaction( SIGINT, &new_action, NULL );
|
27
|
-
|
28
|
-
do{
|
29
|
-
sleep( 1 );
|
30
|
-
}while ( g_IsContinue );
|
31
|
-
}else{
|
32
|
-
result = strtol( argv[ 1 ], NULL, 0 );
|
33
|
-
}
|
34
|
-
return result;
|
35
|
-
}
|