system() 함수 관련 질문입니다..

lsh1172의 이미지

안녕하세요.

system() 함수 관련 질문드려요..

-----------------------------------------
main()
{
system("flash_erase /dev/mtd1 0 1");

_InitTask();

...
}
-----------------------------------------

_InitTask(): 쓰레드들을 생성하고 세마포어 생성 하는 함수.
내용이 많아서 다 보여드릴 수는 없습니다...

이런식으로 프로그래밍이 되어 있을 때
_InitTask() 함수를 막으면
system() 함수의 리턴값이 0으로 제대로 실행이 됩니다.

_InitTask() 함수를 열어서 동작 시키면
system() 함수의 리턴값이 -1이 되면서 제대로 실행이 안됩니다.

쓰레드들 생성하면서 메모리가 부족해서 error가 났을 수도 있다고 생각이 들고요.
또 다른 문제 원인이 있을까요?

메모리가 부족해서 error가 났다고 하면... 확인 할 수 있는 방법이 있을 까요?

답변 부탁 드립니다.

모지리의 이미지

뒷부분은 제가 내용을 모르겠구요(안보여주셨으니. 헤헤..)

일단 system()만 놓고 보면요. 일단 얘를 믿으시면 안니되옵니다.
얘는 가장 커다란 문제가..

1. 리턴값 부정확
2. 언제 리턴해줄지 부정확

이렇습니다. 그래서 특정한 리턴값에 따라 어떤 동작을 처리하실거면

system("flash_erase /dev/mtd1 0 1");

이 부분을 바꾸셔야만 됩니다. 예를 들면 flash_erase 이 프로그램을
라이브러리화 하셔서 그 안의 특정 함수를 호출하셔서 리턴값을 받으시는게
최선의 방법이 아닐까 생각되어집니다.

파이프를 열어서 하는 방법도 있고 뭐 다양하긴 하지만 결국에는 알수없는
부정확한 이상한 어쩌구 저쩌구가 발생하기는 매한가지입니다.

lsh1172의 이미지

답변 감사드립니다.^^

아직까지 헤매고 있네요..

flash_erase 이 프로그램을 라이브러리화하라고 하셨는데
잘 모르겠어요..ㅠㅠ

그리고 말하신 대로 popen이나 fork, exe 계열 함수를 사용해도 제대로 동작을 안하더라고요..

추가로 질문이 있는데요..
mtd 드라이버를 사용해서 flash 제어를 하는데요.
read, write 함수는 제공이 되는데..
erase 관련 함수는 쉘 명령어를 사용해서 프로그램을 해야하는건지
erase 하는 다른 방법이 있나요?
(예를 들어 0xff로 write 해 버리는 방법... 이렇게 해도 되는건가요? ㅎㅎ)

또한, flash write할 때 write() api를 콜 하면
내부적으로 erase가 된다음에 write가 수행이 되는지요?..

제가 테스트 해 봤는데.. erase 하지 않고 write() 콜 했을 때
제대로 된 값이 write 안되서요..

답변 부탁 드립니다.^^
좋은 하루 되세요~~

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.